/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.util.Date;

public class Pedido implements Serializable {
    private String codigoPedido;
    private double precioTotalPedido;
    private Date fechaPedido;
    private String numeroTarjeta;
    private String cvcTarjeta;
    private String numeroDeposito;
    private Persona objPersona=new Persona();
    private String estadoPedido;
    private boolean retorno;

    public Pedido() {
    }

    public String getCodigoPedido() {
        return codigoPedido;
    }

    public void setCodigoPedido(String codigoPedido) {
        this.codigoPedido = codigoPedido;
    }

    public double getPrecioTotalPedido() {
        return precioTotalPedido;
    }

    public void setPrecioTotalPedido(double precioTotalPedido) {
        this.precioTotalPedido = precioTotalPedido;
    }

    public Date getFechaPedido() {
        return fechaPedido;
    }

    public void setFechaPedido(Date fechaPedido) {
        this.fechaPedido = fechaPedido;
    }

    public String getNumeroTarjeta() {
        return numeroTarjeta;
    }

    public void setNumeroTarjeta(String numeroTarjeta) {
        this.numeroTarjeta = numeroTarjeta;
    }

    public String getCvcTarjeta() {
        return cvcTarjeta;
    }

    public void setCvcTarjeta(String cvcTarjeta) {
        this.cvcTarjeta = cvcTarjeta;
    }

    public String getNumeroDeposito() {
        return numeroDeposito;
    }

    public void setNumeroDeposito(String numeroDeposito) {
        this.numeroDeposito = numeroDeposito;
    }

    public Persona getObjPersona() {
        return objPersona;
    }

    public void setObjPersona(Persona objPersona) {
        this.objPersona = objPersona;
    }

    public String getEstadoPedido() {
        return estadoPedido;
    }

    public void setEstadoPedido(String estadoPedido) {
        this.estadoPedido = estadoPedido;
    }

    public boolean isRetorno() {
        return retorno;
    }

    public void setRetorno(boolean retorno) {
        this.retorno = retorno;
    }

    
    
    //el metodo de registrar pedido esta incluido en el procedimiento almacenado
    //de registrar detalle
    
    public static boolean actualizarEstadoPedido(Pedido a){
            boolean estado=false;
            Connection conexion=null;
            try{
               conexion=ControladorBD.darConexionBD();
               CallableStatement st=conexion.prepareCall("{call sp_actualizarEstadoPedido(?,?,?)}");
               
               st.setString(1,a.getCodigoPedido());
               st.setString(2,a.getEstadoPedido());
               st.registerOutParameter(3,java.sql.Types.BOOLEAN);
               st.execute();
                a.setRetorno(st.getBoolean(3));
                if(a.isRetorno()==true)
                {
                    estado=true;
                }
                st.close();
                conexion.close();
            }catch(Exception error){
                    System.out.println("Error en el metodo por: " + error.getMessage());
                    error.printStackTrace();
            }
            
            return estado;
    }
    
    
     public static boolean actualizarTotalPedido(Pedido a){
            boolean estado=false;
            Connection conexion=null;
            try{
               conexion=ControladorBD.darConexionBD();
               CallableStatement st=conexion.prepareCall("{call sp_actualizarTotalPedido(?,?)}");
               st.setString(1,a.getCodigoPedido());
               st.registerOutParameter(3,java.sql.Types.BOOLEAN);
               st.execute();
                a.setRetorno(st.getBoolean(3));
                if(a.isRetorno()==true)
                {
                    estado=true;
                }
                st.close();
                conexion.close();
            }catch(Exception error){
                    System.out.println("Error en el metodo por: " + error.getMessage());
                    error.printStackTrace();
            }
            
            return estado;
    }
     
     //eliminar un pedido en caso de que este no tenga detalles
     public static boolean eliminarPedido (Pedido a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_eliminarPedido "
                     +"(?,?,?)} ");
             st.setString(1,a.getCodigoPedido());             
             st.registerOutParameter(2,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(2));
             if(a.isRetorno()==true)
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    }
     
}
